--[[
    @Author       : GGELUA
    @Date         : 2022-03-05 19:13:34
Last Modified by: GGELUA
Last Modified time: 2023-05-26 21:58:58
--]]
local 道具行囊 = 多开数据[多开数据.当前].__UI界面.窗口层:创建窗口("道具行囊", 0, 0, 769, 486)
local 当前 = 多开数据.当前
function 道具行囊:初始化()
    __置窗口坐标(self)
    self:置精灵(置窗口背景("道具行囊", 0, 12, 718, 474))
    self.格子背景 = __res:getPNGCC(3, 694, 4, 338, 273):到精灵()
end

function 道具行囊:显示(x, y)
    self.格子背景:显示(x + 350, y + 108)
end

function 道具行囊:打开()
    self:置可见(true)
    self:重置("人物", self.人物界面)
    self.人物界面:模型重置()
    self.人物:置选中(true)
    self.格子类型.道具:置选中(true)
    self.页 = 1
    self.道具网格:置物品(多开数据[当前].__主控.道具列表)
    for i = 1, 4 do
        -- if i <= 多开数据[当前].角色信息.扩展背包 then
        self.扩展格子["包裹" .. i]:置可见(true)
        if i == 1 then
            self.扩展格子["包裹" .. i]:置选中(true)
        end
        -- else
        --     self.扩展格子["包裹" .. i]:置可见(false)
        -- end
    end
    -- if 多开数据[当前].角色信息.扩展背包 >= 4 then
    --     self.扩展:置可见(false)
    -- end
    self.包裹类型 = "道具"
    self.抓取类型 = nil
    self.抓取物品ID = nil
    self.格子编号 = nil
    self.选中召唤兽 = nil
    self.选中坐骑 = nil
    self.选中子女 = nil
    self.移动 = false
    self.动画 = {}
end

function 道具行囊:重置抓取()
    if self.抓取物品ID and self.道具网格.子控件[self.格子编号] and self.道具网格.子控件[self.格子编号]._spr then
        self.道具网格.子控件[self.格子编号]._spr.确定 = nil
    end
    if 多开数据[当前].__UI弹出.道具详情.是否可见 then
        多开数据[当前].__UI弹出.道具详情:置可见(false)
    end
    self.抓取物品 = nil
    self.抓取物品ID = nil
    self.格子编号 = nil
    self.移动 = false
end

function 道具行囊:重置(类型, 控件)
    if 控件 then
        self.人物界面:置可见(控件 == self.人物界面, not self.人物界面.是否实例)
        self.召唤兽界面:置可见(控件 == self.召唤兽界面, not self.召唤兽界面.是否实例)
        self.坐骑界面:置可见(控件 == self.坐骑界面, not self.坐骑界面.是否实例)
        self.子女界面:置可见(控件 == self.子女界面, not self.子女界面.是否实例)
    end
    if 类型 == "人物" then
        self:清空()
        self.人物界面:重置()
        self.人物界面.灵饰网格:置物品(多开数据[当前].角色信息.灵饰)
        self.人物界面.装备网格:置物品(多开数据[当前].角色信息.装备)
        self.人物界面:模型重置()
    elseif 类型 == "召唤兽" then
        self:清空()
        self.召唤兽界面.头像网格:置头像(多开数据[当前].角色信息.宝宝列表)
        if self.选中召唤兽 then
            self.召唤兽界面.装备网格:置物品(多开数据[当前].角色信息.宝宝列表[self.选中召唤兽].装备)
            if 多开数据[当前].角色信息.宝宝列表[self.选中召唤兽].饰品 then
                self.召唤兽界面.饰品网格:置物品(多开数据[当前].角色信息.宝宝列表[self.选中召唤兽].饰品)
            end
        else
            self.召唤兽界面.装备网格:置物品({})
            self.召唤兽界面.饰品网格:置物品()
        end
        self.召唤兽界面:模型重置()
    elseif 类型 == "坐骑" then
        self:清空()
        
        self.坐骑界面.头像网格:置头像(多开数据[当前].角色信息.坐骑列表)
        if self.选中坐骑 then
            self.坐骑界面.装备网格:置物品(多开数据[当前].角色信息.坐骑列表[self.选中坐骑].饰品)
        else
            self.坐骑界面.装备网格:置物品(nil)
        end
        if self.选中坐骑 then
            self.坐骑界面.统御网格:置头像(多开数据[当前].角色信息.坐骑列表[self.选中坐骑].统御召唤兽)
        else
            self.坐骑界面.统御网格:置头像(nil)
        end
        self.坐骑界面:模型重置()
    elseif 类型 == "子女" then
        self:清空()
        self.子女界面.头像网格:置头像(多开数据[当前].角色信息.子女列表)
        self.子女界面:模型重置()
    end
    self:重置抓取()
end

function 道具行囊:清空()
    self.召唤兽界面.模型格子:清空()
    self.坐骑界面.模型格子:清空()
    self.人物界面.模型格子:清空()
    self.子女界面.模型格子:清空()
end

function 道具行囊:重置道具()
    道具行囊.道具网格:置物品(多开数据[当前].__主控.道具列表)
end

local 关闭 = 道具行囊:创建我的按钮(__res:getPNGCC(1, 401, 0, 46, 46), "关闭", 718 - 40, 0)

function 关闭:左键弹起(x, y, msg)
    道具行囊:重置抓取()
    道具行囊:清空()
    多开数据[当前].__UI界面.窗口层.道具行囊:置可见(false)
end

for i, v in ipairs {
    { name = '人物', x = 716, y = 58, tcp = __res:getPNGCC(1, 686, 0, 48, 98, true), tcp2 = __res:getPNGCC(1, 737, 0, 54, 99, true), font = "人\n物" },
    { name = '召唤兽', x = 716, y = 162, tcp = __res:getPNGCC(1, 686, 0, 48, 98, true), tcp2 = __res:getPNGCC(1, 737, 0, 54, 99, true), font = "召\n唤\n兽" },
    { name = '坐骑', x = 716, y = 266, tcp = __res:getPNGCC(1, 686, 0, 48, 98, true), tcp2 = __res:getPNGCC(1, 737, 0, 54, 99, true), font = "坐\n骑" },
    { name = '子女', x = 716, y = 371, tcp = __res:getPNGCC(1, 686, 0, 48, 98, true), tcp2 = __res:getPNGCC(1, 737, 0, 54, 99, true), font = "子\n女" },
} do
    local 临时函数 = 道具行囊:创建我的单选按钮(v.tcp, v.tcp2, v.name, v.x, v.y, v.font)
    function 临时函数:左键弹起(x, y)
        道具行囊:重置(v.name, 道具行囊[v.name .. '界面'])
    end
end

for i, v in ipairs {
    { name = '远程仓库', x = 570, y = 430, tcp = __res:getPNGCC(3, 511, 11, 117, 43, true):置拉伸(67, 43), font = "仓库" },
    { name = '出售', x = 640, y = 430, tcp = __res:getPNGCC(3, 511, 11, 117, 43, true):置拉伸(67, 43), font = "出售" },
    --{ name = '强化', x = 500, y = 430, tcp = __res:getPNGCC(3, 511, 11, 117, 43, true):置拉伸(67, 43), font = "强化" },
    { name = '快捷整理', x = 655, y = 390, tcp = __res:getPNGCC(1, 449, 28, 174, 35, true):置拉伸(40, 35), font = "整" },
        -- { name = '摆摊', x = 580, y = 430, tcp = __res:getPNGCC(3, 511, 11, 117, 43, true), font = "摆 摊" },
} do
    local 临时函数 = 道具行囊:创建我的按钮(v.tcp, v.name, v.x, v.y, v.font)
    function 临时函数:左键弹起(x, y)
        if v.name == '快捷整理' then
            发送数据(当前 or self and self.当前,3815,{类型=道具行囊.包裹类型})
        elseif v.name == '出售' then
            多开数据[当前].__UI弹出.提示弹出:打开("出售道具栏特定物品，该功能出售的物品无法恢复！请谨慎操作！", 3785, { shijian = "一键出售" })
        -- elseif v.name == "强化" then    
        --     发送数据(当前 or self and self.当前,222,{事件="升星",事项="打开"})
        --     道具行囊:重置抓取()
        --     道具行囊:清空()
        --     多开数据[当前].__UI界面.窗口层.道具行囊:置可见(false)
        elseif v.name == "远程仓库" then
            if 多开数据[当前].__UI界面.窗口层.仓库.是否可见 then
                多开数据[当前].__UI界面.窗口层.仓库:置可见(false)
            else
                发送数据(当前 or self and self.当前, 6701)
            end
            关闭:左键弹起()
        end
    end
end

local 格子类型 = 道具行囊:创建控件("格子类型", 335, 62, 370, 45)
for i, v in ipairs {
    { name = '道具', x = 0, y = 0, tcp = __res:getPNGCC(3, 511, 11, 117, 43, true), tcp2 = __res:getPNGCC(3, 390, 12, 118, 43, true), font = "道 具" },
    { name = '行囊', x = 126, y = 0, tcp = __res:getPNGCC(3, 511, 11, 117, 43, true), tcp2 = __res:getPNGCC(3, 390, 12, 118, 43, true), font = "行 囊" },
    { name = '任务', x = 249 ,y = 0 , tcp = __res:getPNGCC(3,511,11,117,43,true) , tcp2 = __res:getPNGCC(3,390,12,118,43,true) , font = "任 务"},
} do
    local 临时函数 = 格子类型:创建我的单选按钮(v.tcp, v.tcp2, v.name, v.x, v.y, v.font)
    function 临时函数:左键弹起(x, y)
        if v.name == '道具' then
            if 道具行囊.包裹类型 == "行囊" and 道具行囊.抓取物品ID and 道具行囊.抓取类型 and 道具行囊.移动 then
                发送数据(当前, 3746,
                {序列=道具行囊.抓取物品ID,放置类型="道具",抓取类型=道具行囊.抓取类型})
                发送数据(当前, 3699)
                道具行囊.包裹类型 = "道具"
                道具行囊:重置抓取()
            else
                发送数据(当前, 3699)
                道具行囊.包裹类型 = "道具"
                道具行囊:重置抓取()
            end
            for i = 1, 4 do
                -- if i <= 多开数据[当前].角色信息.扩展背包 then
                道具行囊.扩展格子["包裹" .. i]:置可见(true)
                -- end
            end
        elseif v.name == '行囊' then
            if 道具行囊.包裹类型 == "道具" and 道具行囊.抓取物品ID and 道具行囊.抓取类型 and 道具行囊.移动 then
                发送数据(当前, 3746, { 序列 = 道具行囊.抓取物品ID, 放置类型 = "行囊", 抓取类型 = 道具行囊.抓取类型 })
                发送数据(当前, 3700)
                道具行囊.包裹类型 = "行囊"
                道具行囊:重置抓取()
            else
                发送数据(当前, 3700)
                道具行囊.包裹类型 = "行囊"
                道具行囊:重置抓取()
            end
            for i = 1, 4 do
                道具行囊.扩展格子["包裹" .. i]:置可见(false)
            end
        elseif v.name == '任务' then
            if (道具行囊.包裹类型 == "道具" or 道具行囊.包裹类型 == "行囊") and 道具行囊.抓取物品ID and 道具行囊.抓取类型 and 道具行囊.移动 then
                发送数据(当前,3746,{序列=道具行囊.抓取物品ID,放置类型="任务包裹",抓取类型=道具行囊.抓取类型})
                道具行囊:重置抓取()
        
                临时函数:置选中(false,nil,道具行囊.格子类型[道具行囊.包裹类型])
            else
                发送数据(当前,3750)
                道具行囊.包裹类型="任务包裹"
                道具行囊:重置抓取()
            end
            for i = 1, 4 do
                道具行囊.扩展格子["包裹" .. i]:置可见(false)
            end
        end
    end
end

local 扩展格子 = 道具行囊:创建控件("扩展格子", 350, 380, 260, 50)

for i, v in ipairs {
    { name = '包裹1', x = 5, y = 10, tcp = __res:getPNGCC(1, 449, 28, 174, 35, true):置拉伸(50, 35), tcp1 = __res:getPNGCC(1, 964, 459, 173, 35, true):置拉伸(50, 35), font = "壹" },
    { name = '包裹2', x = 65, y = 10, tcp = __res:getPNGCC(1, 449, 28, 174, 35, true):置拉伸(50, 35), tcp1 = __res:getPNGCC(1, 964, 459, 173, 35, true):置拉伸(50, 35), font = "贰" },
    { name = '包裹3', x = 125, y = 10, tcp = __res:getPNGCC(1, 449, 28, 174, 35, true):置拉伸(50, 35), tcp1 = __res:getPNGCC(1, 964, 459, 173, 35, true):置拉伸(50, 35), font = "叁" },
    { name = '包裹4', x = 185, y = 10, tcp = __res:getPNGCC(1, 449, 28, 174, 35, true):置拉伸(50, 35), tcp1 = __res:getPNGCC(1, 964, 459, 173, 35, true):置拉伸(50, 35), font = "肆" },
} do
    local 临时函数 = 扩展格子:创建我的单选按钮(v.tcp, v.tcp1, v.name, v.x, v.y, v.font)
    function 临时函数:左键弹起(x, y)
        if v.name == '包裹1' then
            if 道具行囊.包裹类型 == "道具" and 道具行囊.抓取物品ID and 道具行囊.抓取类型 and 道具行囊.移动 then
                发送数据(当前, 3701.1, { 抓取id = 道具行囊.抓取物品ID, 放置类型 = "道具", 放置id=1,抓取类型 = 道具行囊.抓取类型 })
                道具行囊.包裹类型 = "道具"
                道具行囊:重置抓取()
                临时函数:置选中(false,nil,道具行囊.扩展格子['包裹'..道具行囊.页])
            else
                道具行囊.页 = 1
                道具行囊:重置抓取()
                道具行囊.道具网格:置物品(多开数据[当前].__主控.道具列表)
            end
        elseif v.name == '包裹2' then
            if 道具行囊.包裹类型 == "道具" and 道具行囊.抓取物品ID and 道具行囊.抓取类型 and 道具行囊.移动 then
                发送数据(当前, 3701.1, { 抓取id = 道具行囊.抓取物品ID, 放置类型 = "道具", 放置id=21,抓取类型 = 道具行囊.抓取类型 })
                道具行囊.包裹类型 = "道具"
                道具行囊:重置抓取()
                临时函数:置选中(false,nil,道具行囊.扩展格子['包裹'..道具行囊.页])
            else
                道具行囊.页 = 2
                道具行囊:重置抓取()
                道具行囊.道具网格:置物品(多开数据[当前].__主控.道具列表)
            end
        elseif v.name == '包裹3' then
            if 道具行囊.包裹类型 == "道具" and 道具行囊.抓取物品ID and 道具行囊.抓取类型 and 道具行囊.移动 then
                发送数据(当前, 3701.1, { 抓取id = 道具行囊.抓取物品ID, 放置类型 = "道具", 放置id=41, 抓取类型 = 道具行囊.抓取类型 })
                道具行囊.包裹类型 = "道具"
                道具行囊:重置抓取()
                临时函数:置选中(false,nil,道具行囊.扩展格子['包裹'..道具行囊.页])
            else
                道具行囊.页 = 3
                道具行囊:重置抓取()
                道具行囊.道具网格:置物品(多开数据[当前].__主控.道具列表)
            end
        elseif v.name == '包裹4' then
            if 道具行囊.包裹类型 == "道具" and 道具行囊.抓取物品ID and 道具行囊.抓取类型 and 道具行囊.移动 then
                发送数据(当前, 3701.1, { 抓取id = 道具行囊.抓取物品ID, 放置类型 = "道具", 放置id=61, 抓取类型 = 道具行囊.抓取类型 })
                道具行囊.包裹类型 = "道具"
                道具行囊:重置抓取()
                临时函数:置选中(false,nil,道具行囊.扩展格子['包裹'..道具行囊.页])
            else
                道具行囊.页 = 4
                道具行囊:重置抓取()
                道具行囊.道具网格:置物品(多开数据[当前].__主控.道具列表)
            end
        end
    end
end


local 道具网格 = 道具行囊:创建网格("道具网格", 350, 110, 339, 272)

function 道具网格:初始化()
    self:创建格子(67, 67, 0, 0, 4, 5)
end

function 道具网格:左键弹起(x, y, a, b, msg)
    if self.子控件[a] and self.子控件[a]._spr and self.子控件[a]._spr.物品 then
        local x, y = self.子控件[a]:取坐标()
        local w, h = self.子控件[a]:取宽高()
        if not 道具行囊.移动 then
            道具行囊:重置抓取()
            if 多开数据[当前].__UI界面.窗口层.共享道具.是否可见 and self.子控件[a]._spr.物品 and self.子控件[a]._spr.物品.共享 then
                self.子控件[a]._spr:详情打开(170, 86, w, h, "背包共享道具", self.子控件[a].真实id or a)
                else
                self.子控件[a]._spr:详情打开(170, 86, w, h, "道具", self.子控件[a].真实id or a)    
                end
            道具行囊.抓取类型 = 道具行囊.包裹类型
            道具行囊.抓取物品ID = self.子控件[a].真实id
            道具行囊.格子编号 = a
            self.子控件[a]._spr.确定 = true
            if 多开数据[当前].__UI界面.窗口层.消息管理.是否可见 then
                多开数据[当前].__UI界面.窗口层.消息管理.附加数据[1] = {类型="道具",点击类型=道具行囊.包裹类型,名称=self.子控件[a]._spr.物品.名称,编号=道具行囊.抓取物品ID}
                多开数据[当前].__UI界面.窗口层.消息管理.消息输入:添加文本("["..self.子控件[a]._spr.物品.名称.."]",频道) 
            end
        else
            发送数据(当前, 3701,
                { 抓取id = 道具行囊.抓取物品ID, 放置id = self.子控件[a].真实id or a, 放置类型 = 道具行囊.包裹类型, 抓取类型 = 道具行囊.抓取类型 })
            道具行囊:重置抓取()
        end
    else
        if 道具行囊.移动 then
            发送数据(当前, 3701,
                { 抓取id = 道具行囊.抓取物品ID, 放置id = self.子控件[a].真实id or a, 放置类型 = 道具行囊.包裹类型, 抓取类型 = 道具行囊.抓取类型 })
            道具行囊:重置抓取()
        else
            道具行囊:重置抓取()
        end
    end
end

function 道具网格:置物品(数据)
    if 道具行囊.包裹类型 == "道具" then
        for i = 1, #道具网格.子控件 do
            if 数据[i + 道具行囊.页 * 20 - 20] then
                local lssj = __物品格子.创建(当前)
                lssj:置物品(数据[i + 道具行囊.页 * 20 - 20], nil, "道具行囊")
                lssj:置偏移(10, 10)
                道具网格.子控件[i].真实id = i + 道具行囊.页 * 20 - 20
                道具网格.子控件[i]:置精灵(lssj)
            else
                道具网格.子控件[i].真实id = i + 道具行囊.页 * 20 - 20
                道具网格.子控件[i]:置精灵()
            end
        end
    else
        for i = 1, #道具网格.子控件 do
            if 数据[i] then
                local lssj = __物品格子.创建(当前)
                lssj:置物品(数据[i], nil, "道具行囊")
                lssj:置偏移(10, 10)
                道具网格.子控件[i].真实id = i
                道具网格.子控件[i]:置精灵(lssj)
            else
                道具网格.子控件[i].真实id = i
                道具网格.子控件[i]:置精灵()
            end
        end
    end
end

local 人物界面 = 道具行囊:创建我的控件("人物界面", 0, 0, 333, 486)

function 人物界面:初始化()
    local nsf = require('SDL.图像')(333, 486)
    if nsf:渲染开始() then
        __res:getPNGCC(3, 383, 64, 294, 275):显示(29, 63)
        __res:getPNGCC(3, 523, 393, 144, 161):显示(103, 131)
        local lssj = 取输入背景(0, 0, 106, 23)
        lssj:显示(72, 352)
        lssj:显示(224, 352)
        lssj = 取输入背景(0, 0, 255, 23)
        lssj:显示(72, 391)
        字体18:置颜色(255, 255, 255)
        字体18:取图像("现金"):置混合(0):显示(26, 352)
        字体18:取图像("储备"):置混合(0):显示(182, 352)
        字体18:取图像("存银"):置混合(0):显示(26, 391)
        nsf:渲染结束()
    end
    self.模型格子 = __UI模型格子.创建(当前)
    self:置精灵(nsf:到精灵())
    self.动画 = {}
end

function 人物界面:重置()
    local nsf = require('SDL.图像')(333, 486)
    if nsf:渲染开始() then
        字体18:置颜色(__取银子颜色(多开数据[当前].角色信息.银子))
        字体18:取图像(多开数据[当前].角色信息.银子):置混合(0):显示(80, 355)
        字体18:置颜色(__取银子颜色(多开数据[当前].角色信息.储备))
        字体18:取图像(多开数据[当前].角色信息.储备):置混合(0):显示(236, 355)
        字体18:置颜色(__取银子颜色(多开数据[当前].角色信息.存银))
        字体18:取图像(多开数据[当前].角色信息.存银):置混合(0):显示(80, 394)
        nsf:渲染结束()
    end
    self.图像 = nsf:到精灵()
end

function 人物界面:模型重置()
    self.模型格子:置数据(多开数据[当前].角色信息, "角色", 175, 250)
end

local 灵饰网格 = 人物界面:创建网格("灵饰网格", 30, 67, 297, 57)

function 灵饰网格:初始化()
    self:创建格子(57, 57, 0, 23, 1, 4)
end

function 灵饰网格:左键弹起(x, y, a, b, msg)
    if self.子控件[a] and self.子控件[a]._spr and self.子控件[a]._spr.物品 then
        local x, y = self.子控件[a]:取坐标()
        local w, h = self.子控件[a]:取宽高()
        self.子控件[a]._spr:详情打开(520, 86, w, h, "灵饰", a)
    end
end

function 灵饰网格:置物品(数据)
    for i = 1, #灵饰网格.子控件 do
        if 数据[i] then
            local lssj = __物品格子.创建(当前)
            lssj:置物品(数据[i], nil, "装备")
            灵饰网格.子控件[i]:置精灵(lssj)
        else
            灵饰网格.子控件[i]:置精灵()
        end
    end
end

local 装备网格 = 人物界面:创建网格("装备网格", 30, 135, 296, 203)

function 装备网格:初始化()
    self:创建格子(57, 57, 16, 181, 3, 2)
end

function 装备网格:左键弹起(x, y, a, b, msg)
    if self.子控件[a] and self.子控件[a]._spr and self.子控件[a]._spr.物品 then
        local x, y = self.子控件[a]:取坐标()
        local w, h = self.子控件[a]:取宽高()
        self.子控件[a]._spr:详情打开(520, 86, w, h, "装备", a)
    end
end

function 装备网格:置物品(数据)
    for i = 1, #装备网格.子控件 do
        if 数据[i] then
            local lssj = __物品格子.创建(当前)
            lssj:置物品(数据[i], nil, "装备")
            装备网格.子控件[i]:置精灵(lssj)
        else
            装备网格.子控件[i]:置精灵()
        end
    end
end

local 法宝 = 人物界面:创建我的按钮(__res:getPNGCC(3, 511, 11, 117, 43, true), "法宝", 26, 430, "法 宝")

function 法宝:左键弹起(x, y, msg)
    if 道具行囊.抓取物品ID and 道具行囊.抓取类型 and 道具行囊.移动 and 道具行囊.道具网格.子控件[道具行囊.格子编号]._spr.物品.总类 == 1000 then
        发送数据(当前, 3746, { 序列 = 道具行囊.抓取物品ID, 放置类型 = "法宝", 抓取类型 = 道具行囊.抓取类型 })
        道具行囊:重置抓取()
    elseif not 道具行囊.抓取物品ID then
        道具行囊.关闭:左键弹起()
        多开数据[当前].__UI界面.窗口层.法宝:打开()
        发送数据(当前, 3732)
    else
        多开数据[当前].__UI弹出.提示框:打开('#Y不是什么东西都可以放到法宝里的')
    end
end
 
local 锦衣 = 人物界面:创建我的按钮(__res:getPNGCC(3, 511, 11, 117, 43, true), "锦衣", 197, 430., "锦 衣")

function 锦衣:左键弹起(x, y, msg)
    if 多开数据[当前].角色信息.锦衣 and #多开数据[当前].角色信息.锦衣 > 0 then
        多开数据[当前].__UI弹出.锦衣弹出:打开(多开数据[当前].角色信息.锦衣)
    else
        多开数据[当前].__UI弹出.锦衣弹出:打开()
    end
end

local 召唤兽界面 = 道具行囊:创建我的控件("召唤兽界面", 0, 0, 350, 486)

function 召唤兽界面:初始化()
    local nsf = require('SDL.图像')(350, 486)
    if nsf:渲染开始() then
        __res:getPNGCC(3, 375, 388, 145, 149):显示(105, 105)
        local lssj = 取输入背景(0, 0, 168, 23)
        lssj:显示(31, 50)
        lssj = 取输入背景(0, 0, 106, 23)
        lssj:显示(74, 272)
        lssj:显示(226, 272)
        字体18:置颜色(255, 255, 255)
        字体18:取图像("气血"):置混合(0):显示(31, 272)
        字体18:取图像("魔法"):置混合(0):显示(182, 272)
        取属性背景(0, 0, 333, 163, true):显示(10, 310)
        nsf:渲染结束()
    end
    self.模型格子 = __UI模型格子.创建(当前)
    self:置精灵(nsf:到精灵())
    self:置可见(false)
end

function 召唤兽界面:重置()
    local nsf = require('SDL.图像')(333, 486)
    if nsf:渲染开始() then
        if 道具行囊.选中召唤兽 and 多开数据[当前].角色信息.宝宝列表[道具行囊.选中召唤兽] then
            字体18:置颜色(0, 0, 0)
            字体18:取图像(多开数据[当前].角色信息.宝宝列表[道具行囊.选中召唤兽].名称):置混合(0):显示(40, 52)
            字体18:取图像(string.format("%s/%s", 多开数据[当前].角色信息.宝宝列表[道具行囊.选中召唤兽].气血,
            多开数据[当前].角色信息.宝宝列表[道具行囊.选中召唤兽].最大气血)):置混合(0):显示(86, 273)
            字体18:取图像(string.format("%s/%s", 多开数据[当前].角色信息.宝宝列表[道具行囊.选中召唤兽].魔法,
            多开数据[当前].角色信息.宝宝列表[道具行囊.选中召唤兽].最大魔法)):置混合(0):显示(229, 273)
        end
        nsf:渲染结束()
    end
    self.图像 = nsf:到精灵()
end

function 召唤兽界面:模型重置()
    if 道具行囊.选中召唤兽 and 多开数据[当前].角色信息.宝宝列表[道具行囊.选中召唤兽] then
        self.模型格子:置数据(多开数据[当前].角色信息.宝宝列表[道具行囊.选中召唤兽], "召唤兽", 178, 210)
        召唤兽界面.装备网格:置物品(多开数据[当前].角色信息.宝宝列表[道具行囊.选中召唤兽].装备)
        if 多开数据[当前].角色信息.宝宝列表[道具行囊.选中召唤兽].饰品 then
            召唤兽界面.饰品网格:置物品(多开数据[当前].角色信息.宝宝列表[道具行囊.选中召唤兽].饰品)
        end
    end
end

local 装备网格 = 召唤兽界面:创建网格("装备网格", 31, 84, 100, 180)

function 装备网格:初始化()
    self:创建格子(55, 55, 4, 0, 3, 1)
end

function 装备网格:左键弹起(x, y, a, b, msg)
    if self.子控件[a] and self.子控件[a]._spr and self.子控件[a]._spr.物品 then
        local x, y = self.子控件[a]:取坐标()
        local w, h = self.子控件[a]:取宽高()
        self.子控件[a]._spr:详情打开(520, 86, w, h, "装备", a)
    end
end

function 装备网格:置物品(数据)
    for i = 1, #装备网格.子控件 do
        local lssj = __物品格子.创建(当前)
        lssj:置物品(数据[i], "白格子", "装备")
        装备网格.子控件[i]:置精灵(lssj)
    end
end

local 饰品网格 = 召唤兽界面:创建网格("饰品网格", 261, 84, 100, 180)

function 饰品网格:初始化()
    self:创建格子(55, 55, 4, 0, 1, 1)
end

function 饰品网格:左键弹起(x, y, a, b, msg)
    if self.子控件[a] and self.子控件[a]._spr and self.子控件[a]._spr.物品 then
        local x, y = self.子控件[a]:取坐标()
        local w, h = self.子控件[a]:取宽高()
        self.子控件[a]._spr:详情打开(520, 86, w, h, "饰品", a)
    end
end

function 饰品网格:置物品(数据)
    for i = 1, #饰品网格.子控件 do
        local lssj = __物品格子.创建(当前)
        if 数据 ==1 then
            lssj:置物品({名称=多开数据[当前].角色信息.宝宝列表[道具行囊.选中召唤兽].模型.."饰品"}, "白格子", "饰品")
        else
            lssj:置物品(nil, "白格子", "饰品")
        end
        饰品网格.子控件[i]:置精灵(lssj)
    end
end

local 头像网格 = 召唤兽界面:创建网格("头像网格", 20, 323, 315, 140)

function 头像网格:初始化()
    self:创建格子(73, 73, 6, 6, 3, 4, true)
end

function 头像网格:左键弹起(x, y, a, b, msg)
    if 道具行囊.选中召唤兽 then
        self.子控件[道具行囊.选中召唤兽]._spr.确定 = nil
        道具行囊.选中召唤兽 = nil
    end
    if self.子控件[a] and self.子控件[a]._spr then
        self.子控件[a]._spr.确定 = true
        道具行囊.选中召唤兽 = a
    end
    召唤兽界面:重置()
    召唤兽界面:模型重置()
end

function 头像网格:置头像(数据)
    for i = 1, #头像网格.子控件 do
        if 数据[i] then
            local lssj = __头像格子.创建(当前)
            lssj:置头像(数据[i], "大")
            头像网格.子控件[i]:置精灵(lssj)
        else
            头像网格.子控件[i]:置精灵()
        end
    end
end

local 坐骑界面 = 道具行囊:创建我的控件("坐骑界面", 0, 0, 350, 486)

function 坐骑界面:初始化()
    local nsf = require('SDL.图像')(350, 486)
    if nsf:渲染开始() then
        __res:getPNGCC(3, 375, 388, 145, 149):显示(30, 104)
        local lssj = 取输入背景(0, 0, 168, 23)
        lssj:显示(30, 68)
        lssj = 取输入背景(0, 0, 75, 23)
        lssj:显示(73, 270)
        lssj:显示(234, 270)
        字体18:置颜色(255, 255, 255)
        字体18:取图像("好感"):置混合(0):显示(29, 270)
        字体18:取图像("饱食"):置混合(0):显示(189, 270)
        字体18:取图像("统御"):置混合(0):显示(189, 180)
        取属性背景(0, 0, 330, 163, true):显示(10, 310)
        nsf:渲染结束()
    end
    self.模型格子 = __UI模型格子.创建(当前)
    self:置精灵(nsf:到精灵())
    self:置可见(false)
end

function 坐骑界面:重置()
    道具行囊:清空()
    道具行囊.坐骑界面.头像网格:置头像(多开数据[当前].角色信息.坐骑列表)
    if 道具行囊.选中坐骑 then
        道具行囊.坐骑界面.装备网格:置物品(多开数据[当前].角色信息.坐骑列表[道具行囊.选中坐骑].饰品)
    else
        道具行囊.坐骑界面.装备网格:置物品(nil)
    end
    if 道具行囊.选中坐骑 then
        道具行囊.坐骑界面.统御网格:置头像(多开数据[当前].角色信息.坐骑列表[道具行囊.选中坐骑].统御召唤兽)
    else
        道具行囊.坐骑界面.统御网格:置头像(nil)
    end
    道具行囊.坐骑界面:模型重置()
    local nsf = require('SDL.图像')(333, 486)
    if nsf:渲染开始() then
        if 道具行囊.选中坐骑 then
            字体18:置颜色(0, 0, 0)
            字体18:取图像(多开数据[当前].角色信息.坐骑列表[道具行囊.选中坐骑].名称):置混合(0):显示(38, 72)
            字体18:取图像("100"):置混合(0):显示(80, 273)
            字体18:取图像("100"):置混合(0):显示(240, 273)
        end
        nsf:渲染结束()
    end
    self.图像 = nsf:到精灵()
end

function 坐骑界面:模型重置()
    if 道具行囊.选中坐骑 then
        self.模型格子:置数据(多开数据[当前].角色信息.坐骑列表[道具行囊.选中坐骑], "坐骑", 100, 210,
            多开数据[当前].角色信息.模型)
        坐骑界面.装备网格:置物品(多开数据[当前].角色信息.坐骑列表[道具行囊.选中坐骑].饰品)
        坐骑界面.统御网格:置头像(多开数据[当前].角色信息.坐骑列表[道具行囊.选中坐骑].统御召唤兽)
    end
end

local 装备网格 = 坐骑界面:创建网格("装备网格", 190, 110, 55, 55)

function 装备网格:初始化()
    self:创建格子(55, 55, 0, 0, 1, 1)
end

function 装备网格:左键弹起(x, y, a, b, msg)
    if self.子控件[a] and self.子控件[a]._spr and self.子控件[a]._spr.物品 then
        local x, y = self.子控件[a]:取坐标()
        local w, h = self.子控件[a]:取宽高()
        self.子控件[a]._spr:详情打开(520, 86, w, h, "装备", a)
    end
end

function 装备网格:置物品(数据)
    for i = 1, #装备网格.子控件 do
        if 数据 then
            local lssj = __物品格子.创建(当前)
            lssj:置物品(数据, "白格子", "装备")
            装备网格.子控件[i]:置精灵(lssj)
        else
            装备网格.子控件[i]:置精灵()
        end
    end
end

local 统御网格 = 坐骑界面:创建网格("统御网格", 190, 205, 150, 60)

function 统御网格:初始化()
    self:创建格子(55, 55, 0, 20, 1, 2)
end

function 统御网格:置头像(数据)
    for i = 1, #统御网格.子控件 do
        if 数据 and #数据 > 0 and 数据[i] then
            for n,v in ipairs(多开数据[当前].角色信息.宝宝列表) do
                if v.认证码 == 数据[i] then
                    local lssj = __头像格子.创建(当前)
                    lssj:置头像(v, "小", 55, 55)
                    统御网格.子控件[i]:置精灵(lssj)
                    return
                end
            end
            local lssj = __头像格子.创建(当前)
            lssj:置头像(nil, "小", 55, 55)
            统御网格.子控件[i]:置精灵(lssj)
        else
            local lssj = __头像格子.创建(当前)
            lssj:置头像(nil, "小", 55, 55)
            统御网格.子控件[i]:置精灵(lssj)
        end
    end
end

function 统御网格:左键弹起(x, y, a, b, msg)
    if 道具行囊.选中坐骑 then
        local 统御 = 多开数据[当前].角色信息.坐骑列表[道具行囊.选中坐骑].统御召唤兽
        if (统御 or {})[a] then
            local 对话信息 = {"取消统御" }
            local 回调处理 = function(i, 选项)
                if 选项[i] == "取消统御" then
   
                    发送数据(当前, 59.1, {坐骑认证码=多开数据[当前].角色信息.坐骑列表[道具行囊.选中坐骑].认证码, 编号 = a })
                end
            end
            多开数据[当前].__UI界面.窗口层.对话栏:打开({ 模型 = "天兵", 名称 = "统御召唤兽", 对话 = "请选择你要进行的操作。", 选项 = 对话信息, 回调处理 = 回调处理 })
        else
            if #多开数据[当前].角色信息.宝宝列表 == 0 then
                多开数据[当前].__UI弹出.提示框:打开("#Y/你没有可以统御的召唤兽！")
                return
            end
            local 对话信息 = {}
            for i = 1, #多开数据[当前].角色信息.宝宝列表 do
                对话信息[i] = 多开数据[当前].角色信息.宝宝列表[i].名称
            end

            local 回调处理 = function(i)
                发送数据(当前, 59, {
                    坐骑认证码 = 多开数据[当前].角色信息.坐骑列表[道具行囊.选中坐骑].认证码,
                    位置 = a,
                    认证码 = 多开数据[当前].角色信息
                        .宝宝列表[i].认证码
                })
            end
            多开数据[当前].__UI界面.窗口层.对话栏:打开({ 模型 = "天兵", 名称 = "统御召唤兽", 对话 = "请选择你要统御的召唤兽。", 选项 = 对话信息, 回调处理 = 回调处理 })
        end
    end
end

local 头像网格 = 坐骑界面:创建网格("头像网格", 15, 320, 315, 154)

function 头像网格:初始化()
    self:创建格子(73, 73, 4, 8, 2, 4)
end

function 头像网格:左键弹起(x, y, a, b, msg)
    if 道具行囊.选中坐骑 then
        self.子控件[道具行囊.选中坐骑]._spr.确定 = nil
        道具行囊.选中坐骑 = nil
    end
    if self.子控件[a] and self.子控件[a]._spr then
        self.子控件[a]._spr.确定 = true
        道具行囊.选中坐骑 = a
        if 多开数据[当前].角色信息.坐骑 and 多开数据[当前].角色信息.坐骑列表 and (多开数据[当前].角色信息.坐骑.认证码 == 多开数据[当前].角色信息.坐骑列表[道具行囊.选中坐骑].认证码) then
            坐骑界面:我的按钮置文字(坐骑界面.骑乘, __res:getPNGCC(3, 126, 563, 111, 36, true), "下骑")
        else
            坐骑界面:我的按钮置文字(坐骑界面.骑乘, __res:getPNGCC(3, 126, 563, 111, 36, true), "骑乘")
        end
    end
    坐骑界面:重置()
    坐骑界面:模型重置()
end

function 头像网格:置头像(数据)
    for i = 1, #头像网格.子控件 do
        if 数据 and #数据 > 0 and 数据[i] then
            local lssj = __头像格子.创建(当前)
            lssj:置头像(数据[i], "大")
            头像网格.子控件[i]:置精灵(lssj)
        else
            头像网格.子控件[i]:置精灵()
        end
    end
end

local 骑乘 = 坐骑界面:创建我的按钮(__res:getPNGCC(3, 126, 563, 111, 36, true), "骑乘", 211, 62, "骑乘")

function 骑乘:左键弹起(x, y, msg)
    if 道具行囊.选中坐骑 then
        if 多开数据[当前].角色信息.坐骑 and 多开数据[当前].角色信息.坐骑列表 and (多开数据[当前].角色信息.坐骑.认证码 == 多开数据[当前].角色信息.坐骑列表[道具行囊.选中坐骑].认证码) then
            发送数据(当前, 27, { 序列 = 0 })
            坐骑界面:我的按钮置文字(self, __res:getPNGCC(3, 126, 563, 111, 36, true), "骑乘")
        else
            发送数据(当前, 26, { 序列 = 道具行囊.选中坐骑 })
            坐骑界面:我的按钮置文字(self, __res:getPNGCC(3, 126, 563, 111, 36, true), "下骑")
        end
    end
end

local 属性 = 坐骑界面:创建我的按钮(__res:getPNGCC(3, 244, 563, 78, 34, true), "属性", 256, 140, "属性")

function 属性:左键弹起(x, y, msg)
    多开数据[当前].__UI界面.窗口层.坐骑属性:打开()
end

local 飞行 = 坐骑界面:创建我的按钮(__res:getPNGCC(3, 244, 563, 78, 34, true), "飞行", 256, 104, "飞行")

function 飞行:左键弹起(x, y, msg)
    发送数据(当前, 125, { 序列 = 道具行囊.选中坐骑 })
end

local 子女界面 = 道具行囊:创建我的控件("子女界面", 0, 0, 350, 486)

function 子女界面:初始化()
    local nsf = require('SDL.图像')(350, 486)
    if nsf:渲染开始() then
        __res:getPNGCC(3, 375, 388, 145, 149):显示(30, 120)
        local lssj = 取输入背景(0, 0, 166, 23)
        lssj:显示(30, 68)
        取属性背景(0, 0, 330, 163, true):显示(10, 310)
        nsf:渲染结束()
    end
    self.模型格子 = __UI模型格子.创建(当前)
    self:置精灵(nsf:到精灵())
    self:置可见(false)
end

function 子女界面:重置()
    local nsf = require('SDL.图像')(333, 486)
    if nsf:渲染开始() then
        if 道具行囊.选中子女 then
            字体18:置颜色(__取颜色('黑色'))
            字体18:取图像(多开数据[当前].角色信息.子女列表[道具行囊.选中子女].名称):置混合(0):显示(38, 72)
            if 多开数据[当前].角色信息.子女列表[道具行囊.选中子女].门派 then
                self.加入门派:我的按钮置文字(self.加入门派, __res:getPNGCC(3, 126, 563, 111, 36, true), "设置加点")
                if 多开数据[当前].角色信息.子女列表[道具行囊.选中子女].成年 then
                    self.加入门派:置可见(true)
                else
                    self.加入门派:置可见(false)
                end
            else
                self.加入门派:我的按钮置文字(self.加入门派, __res:getPNGCC(3, 126, 563, 111, 36, true), "加入门派")
                self.加入门派:置可见(true)
            end
        end
        nsf:渲染结束()
    end
    self.图像 = nsf:到精灵()
end

function 子女界面:模型重置()
    if 道具行囊.选中子女 then
        self.模型格子:置数据(多开数据[当前].角色信息.子女列表[道具行囊.选中子女], "子女", 100, 210)
    end
end

local 头像网格 = 子女界面:创建网格("头像网格", 15, 317, 315, 154)

function 头像网格:初始化()
    self:创建格子(73, 73, 4, 8, 1, 4)
end

function 头像网格:左键弹起(x, y, a, b, msg)
    if 道具行囊.选中子女 then
        self.子控件[道具行囊.选中子女]._spr.确定 = nil
        道具行囊.选中子女 = nil
    end
    if self.子控件[a] and self.子控件[a]._spr then
        self.子控件[a]._spr.确定 = true
        道具行囊.选中子女 = a
    end
    子女界面:重置()
    子女界面:模型重置()
end

function 头像网格:置头像(数据)
    for i = 1, #头像网格.子控件 do
        if 数据 and #数据 > 0 and 数据[i] then
            local lssj = __头像格子.创建(当前)
            lssj:置头像(数据[i], "大")
            头像网格.子控件[i]:置精灵(lssj)
        else
            头像网格.子控件[i]:置精灵()
        end
    end
end

for i, v in ipairs {
    { name = '学习', x = 180, y = 270, tcp = __res:getPNGCC(3, 126, 563, 111, 36, true), font = "学习" },
    { name = '属性', x = 51, y = 270, tcp = __res:getPNGCC(3, 126, 563, 111, 36, true), font = "属性" },
} do
    local 临时函数 = 子女界面:创建我的按钮(v.tcp, v.name, v.x, v.y, v.font)
    function 临时函数:左键弹起(x, y)
        if 道具行囊.选中子女 then
            if v.name == '学习' then
                发送数据(当前, 96, { 类型 = "学习", 编号 = 道具行囊.选中子女 })
                -- 发送数据(当前,6702,{序列 = 道具行囊.选中子女})
            elseif v.name == '属性' then
                多开数据[当前].__UI界面.窗口层.子女查看:打开(多开数据[当前].角色信息.子女列表[道具行囊.选中子女])
            end
        end
    end
end

local 加入门派 = 子女界面:创建我的按钮(__res:getPNGCC(3, 126, 563, 111, 36, true), "加入门派", 210, 60, "加入门派")
function 加入门派:左键弹起(x, y, msg)
    if 道具行囊.选中子女 then
        if 多开数据[当前].角色信息.子女列表[道具行囊.选中子女].门派 then
            多开数据[当前].__UI弹出.子女弹出:打开(道具行囊.选中子女)
        else
            发送数据(当前, 92, { 编号 = 道具行囊.选中子女 })
        end
    end
end
